///*******************************************************************************
// * Copyright (c) 2000, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.views.properties;
//
//import org.eclipse.jface.dialogs.MessageDialog;
//import org.eclipse.jface.viewers.IStructuredSelection;
//import org.eclipse.swt.SWTError;
//import org.eclipse.swt.dnd.Clipboard;
//import org.eclipse.swt.dnd.DND;
//import org.eclipse.swt.dnd.TextTransfer;
//import org.eclipse.swt.dnd.Transfer;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.internal.views.properties.PropertiesMessages;
//
///**
// * Copies a property to the clipboard.
// */
///*package*/class CopyPropertyAction extends PropertySheetAction {
//    /**
//     * System clipboard
//     */
//    private Clipboard clipboard;
//
//    /**
//     * Creates the action.
//     * 
//     * @param viewer the viewer
//     * @param name the name
//     * @param clipboard the clipboard
//     */
//    public CopyPropertyAction(PropertySheetViewer viewer, String name,
//            Clipboard clipboard) {
//        super(viewer, name);
//        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
//                IPropertiesHelpContextIds.COPY_PROPERTY_ACTION);
//        this.clipboard = clipboard;
//    }
//
//    /**
//     * Performs this action.
//     */
//    public void run() {
//        // Get the selected property
//        IStructuredSelection selection = (IStructuredSelection) getPropertySheet()
//                .getSelection();
//        if (selection.isEmpty()) {
//			return;
//		}
//        // Assume single selection
//        IPropertySheetEntry entry = (IPropertySheetEntry) selection
//                .getFirstElement();
//
//        // Place text on the clipboard
//        StringBuffer buffer = new StringBuffer();
//        buffer.append(entry.getDisplayName());
//        buffer.append("\t"); //$NON-NLS-1$
//        buffer.append(entry.getValueAsString());
//
//        setClipboard(buffer.toString());
//    }
//
//    /** 
//     * Updates enablement based on the current selection.
//     * 
//     * @param sel the selection
//     */
//    public void selectionChanged(IStructuredSelection sel) {
//        setEnabled(!sel.isEmpty());
//    }
//
//    private void setClipboard(String text) {
//        try {
//            Object[] data = new Object[] { text };
//            Transfer[] transferTypes = new Transfer[] { TextTransfer
//                    .getInstance() };
//            clipboard.setContents(data, transferTypes);
//        } catch (SWTError e) {
//            if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
//				throw e;
//			}
//            if (MessageDialog.openQuestion(getPropertySheet().getControl()
//                    .getShell(), PropertiesMessages.CopyToClipboardProblemDialog_title,
//                    PropertiesMessages.CopyToClipboardProblemDialog_message)) {
//				setClipboard(text);
//			}
//        }
//    }
//}
//
